//
//  FileUtil.h
//  SWIOSLibary
//
//  Created by shaowei on 13-7-21.
//  Copyright (c) 2013年 LianZhan. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef NS_OPTIONS(NSUInteger, CachePathTypes) {
    CachePathTypeOfNone          = 0,
    CachePathTypeOfLibraryCaches = 1 << 0,
    CachePathTypeOfDocuments     = 1 << 1,
    CachePathTypeOfTmp           = 1 << 2,
};

/**
 *  数据尺寸对象
 */
@interface SWDataSizeObj : NSObject

/**
 *  数据大小的单位字符串，例如 B,KB,MB 等等
 */
@property (nonatomic, strong) NSString *unitStr;

/**
 *  数据大小(以unitStr为单位)的字符串表示方式，精确到小数点后2位
 */
@property (nonatomic, strong) NSString *sizeStr;

/**
 *  数据大小，以B为单位来表示。
 */
@property (nonatomic, assign) unsigned long long sizeB;

/**
 *  数据大小，以property-unit为单位来表示。
 */
@property (nonatomic, assign) CGFloat sizeU;

@end


@interface SWFileUtil : NSObject

/**
 *	获取指定路径文件（或目录）的大小
 *
 *	@param	filePath	指定文件（或目录）路径
 *
 *	@return	文件（或目录）的详细大小,单位bytes（字节）
 */
+ (unsigned long long)fileOrDirSizeAtPath:(NSString *)filePath;

/**
 *	获取指定路径文件（或目录）的大小
 *
 *	@param	filePath	指定文件（或目录）路径
 *
 *	@return	文件（或目录）的详细大小(key:size)和单位(key:unit)，自动匹配显示合适的计量单位
 */
+ (SWDataSizeObj *)fileOrDirSizeDetailAtPath:(NSString *)filePath;

/**
 *  获取指定的多个路径文件（或目录）的大小
 *
 *  @param types 路径类型，可以按位“与”，来添加多个
 *
 *  @return 数据对象
 */
+ (SWDataSizeObj *)fileOrDirSizeDetailWithPathTypes:(CachePathTypes)types;

/**
 *  获取 数组里的路径文件（或目录）的大小
 *
 *  @param paths 文件（或目录）的数组
 *
 *  @return 数据对象
 */
+ (SWDataSizeObj *)fileOrDirSizeDetailWithPaths:(NSArray *)paths;

/**
 *	删除指定目录的下的全部内容,但是只删除文件，不删文件夹
 *
 *	@param	dirPath	要删除的目录-路径
 *	@param	nameKey	目录下的文件名（当前目录下，不会遍历子目录），包含此关键词的，保留下来。
 *
 *	@return	返回操作结果
 */
+ (BOOL)removeDirCacheContent:(NSString *)dirPath exceptForKey:(NSString *)nameKey;

@end
